package net.chrisrichardson.ec2deployer.cluster

import net.chrisrichardson.ec2deployer.core.EC2Server

interface Tier {

    def saveState(state)
    def restoreState(state)
    def assignHosts(hosts)

    void start()
    void stop()

    List<EC2Server> getServers()
    
    boolean isExpandable()
    boolean isShrinkable()
    boolean isStarted()

    void prepareToClone(Map<String, Object> cloneState, ClusterSpec clonedClusterSpec)
    void startAfterCloning(Map<String, Object> cloneState)
    
}